[Bug]: 请问如何正确的关闭go | 您所在的位置:网站首页 › open images怎么关 › [Bug]: 请问如何正确的关闭go |
请确保您已阅读以上注意事项,并勾选下方的确认框。
我已经仔细阅读上述教程和 "提问前需知"
我已经使用 dev分支版本 测试过,问题依旧存在。
我已经在 Issue Tracker 中找过我要提出的问题,没有找到相同问题的ISSUE。
我已知晓并同意,此处仅用于汇报程序中存在的问题。若这个 Issue 是关于其他非程序本身问题,则我的 Issue 可能会被无条件自动关闭或/并锁定。(这些问题应当在 Discussion 板块提出。)
go-cqhttp 版本
1.0rc1 运行环境Windows (64) 运行架构AMD64 连接方式WebSocket (正向) 使用协议1 | Android Phone 重现步骤两个办法均可以触发: 流程A:使用引导进程启动go-cqhttp,等待登录完成后,结束进程,并稍后再次启动(引导进程不退出)。 流程B:使用引导进程启动go-cqhttp,等待登录完成后,结束进程。此时再关闭引导进程重开,走登录环节前此问题复现。 期望的结果是什么?正常完成进程被关闭 -> 重启的过程。 实际的结果是什么?1.0rc1版本: [2022-03-16 01:26:35] [FATAL]: 打开数据库失败: open backend error: open leveldb error: The process cannot access the file because it is being used by another process. dev版本: [2022-03-16 01:30:09] [FATAL]: open image cache failed: 文件被其他进程占用 补充: 我的判断是leveldb打开失败,直接原因就是上次进程没有能够正常退出。因此我设想的修补方案是给gocqhttp发中断的指令。 但是,golang的process模块明确说明“Sending Interrupt on Windows is not implemented.” gocqhttp手册中也没有找到如何命令gocqhttp退出的说明。 简单的复现代码/链接(可选) 代码大致如此: "github.com/fy0/procs" // 引用这个包,原版包缺依赖 func run() { p := procs.NewProcess(gocqhttpExePath + " faststart") p.Dir = workDir p.Run() return p } p := run() p.Stop() run() // stop内部使用golang内置的process包的Kill // Stop tries to stop the process. func (p *Process) Stop() error { for _, cmd := range p.Cmds { // ProcessState means it is already exited. if cmd.ProcessState != nil { continue } err := cmd.Process.Kill() if err != nil { return err } } return nil } ### 日志记录(可选) _No response_ ### 补充说明(可选) _No response_ |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |